//
//  ZXOpenMapsSchemeManager.h
//  CAIOpenMapsManager
//
//  Created by zhuxm2023 on 2023/10/25.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

NS_ASSUME_NONNULL_BEGIN

typedef NS_ENUM(NSUInteger, ZXMapType) {
    ///高德，坐标系类型是AMap
    ZXMapTypeAMap = 0,
    ///百度，坐标系类型默认是baidu的；
    ZXMapTypeBaidu = 1,
    ///苹果，坐标系类型是AMap
    ZXMapTypeApple = 2,
};

@interface ZXOpenMapsSchemeManager : NSObject

/// 获取支持的地图列表
- (NSArray <NSDictionary*>*)getSupportMapItemSchemes;


/// 获取支持的地图列表，block返回；
/// @param finish 返回items和titles集合；
- (void)getSupportMapItemSchemesFinishBlock:(nullable void(^)(NSArray <NSDictionary *> *items))finish;


/// scheme调用打开高德地图App-路线规划，使用火星坐标系（GCJ02）的经纬度；
/// @param lat 目的纬度
/// @param lon 目的精度
/// @param poiName poi名称，位置名称；可选参数；
/// @param failure 没有安装高德app的提示文本回调
+ (void)openSchemeURLToAMapClientForNavigationWithLatitude:(double)lat
                                                 longitude:(double)lon
                                                   poiName:(nullable NSString *)poiName
                                               openFailure:( nullable void(^)(NSString *tostTitle))failure;


/// scheme调用打开百度地图App-路线规划，默认使用火星坐标系（GCJ02）的经纬度；
/// @param lat 目的纬度
/// @param lon 目的精度
/// @param poiName poi名称，位置名称，只是简单的显示指定的位置，不会去执行位置搜索；可选参数
/// @param failure 没有安装app的提示文本回调
+ (void)openSchemeURLToBaiduMapClientForNavigationWithLatitude:(double)lat
                                                     longitude:(double)lon
                                                       poiName:(nullable NSString *)poiName
                                                   openFailure:(nullable void(^)(NSString *tostTitle))failure;


/// scheme调用打开苹果系统地图App-路线规划，使用火星坐标系（GCJ02）的经纬度；优先目的位置导航，如果没有传目的位置名称，则根据目的位置经纬度导航。
/// @param lat 目的纬度
/// @param lon 目的精度
/// @param poiName 目的位置；
+ (void)openSchemeURLToAppleMapClientForNavigationWithLatitude:(double)lat
                                                     longitude:(double)lon
                                                       poiName:(nullable NSString *)poiName;


@end

NS_ASSUME_NONNULL_END
